#### 激活函数 sigmoid层的实现，这些的层，现在更为贴近神经网络的结构了，我们之前其实主要是在实现一下那个公式的效果
#### 现在开始往神经网络去靠了，当然，以之前那种纯粹为了实现公式的方式，也是可以实现神经网络的，不是嘛
#### 现在的这个实现，是在一个新的概念的基础上：计算图
import numpy as np


class Sigmoid:
    def __init__(self):
        self.out = None  # 这个输出要记录下来，反向输出的时候用得上

    # forward
    def forward(self, x):
        out = 1 / (1 + np.exp(-x))
        self.out = out
        return out

    # backward
    def backward(self, dout):
        dx = dout * (1.0 - self.out) * self.out  # 为什么它的反向输出是这个，可以去见书上的详细推导
        return dx